﻿using GalaSoft.MvvmLight.Command;
using JiveMessenger.Models;
using JiveMessenger.User;
using JiveMessenger.Utilities;
using JmShared;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows.Input;
using Windows.UI.Xaml.Media;
namespace JiveMessenger.ViewModels
{
    public interface IViewModelMainPage
    {

        RelayCommand EditFontCommand { get; set; }
        RelayCommand GetEmoticonsCommand { get;  set; }
        RelayCommand<bool> DisconnectCommand { get;  set; }
        RelayCommand LoginCommand { get; set; }
        RelayCommand OpenOptionsCommand { get;  set; }
        RelayCommand<ViewModelTab> CloseTabCommand { get; set; }
        RelayCommand OpenNotificationsCommand { get; set; }
        RelayCommand<ViewModelTab> CloseAllTabsCommand { get; set; }
        RelayCommand<ViewModelTab> PinTabCommand { get; set; }
        RelayCommand ShowTabListCommand { get; set; }
        RelayCommand<ViewModelTab> SelectTabCommand { get; set; }
        RelayCommand<ViewModelChat> OpenDownloadMessagesCommand { get; set; }
        RelayCommand CloseTabsListCommand { get; set; }
        RelayCommand OpenEmoticonsCommand { get; set; }
        ViewModelTab CurrentActiveViewModel { get; set; }
        ObservableCollection<ViewModelTab> ChatViewModels { get; }
        Uri TabButtonImageUri { get; set; }

        bool IsChatControlVisible { get; set; }
        bool IsLoginControlVisible { get; set; }
        bool IsTabListOpen { get; set; }
        int EmoticonControlPivotIndex { get; set; }
        int SelectedPivotItemIndex { get; set; }
        bool ShowFauxKeyboardGrid { get; set; }
        bool ShowEmoticonPopup { get; set; }
        double EmoticonControlHeight { get; set; }
        double EmoticonControlWidth { get; set; }
        double FauxKeyboardHeight { get; set; }
        string JiveIcon { get;}
        string EmptyClientListText { get; }
        //double VisibleBoundsWidth { get; set; }
        //double VisibleBoundsHeight { get; set; }
        void RestoreTabs();
        void RunOnNetworkConnect();
        void RunOnNetworkDisconnect();
        void Cleanup();
    }
}
